'''
python中没有传统意义上的构造方法重载。
在Python中，构造方法的名称始终是`__init__`，并且只能有一个构造方法。
这是因为Python中的构造方法是隐式调用的，而不是显式调用的。
当创建一个类的实例时，Python会自动调用`__init__`方法来初始化实例的属性。
如果需要在创建实例时执行其他操作，可以在`__init__`方法中添加相应的代码。
因此，在Python中，构造方法的重载是通过在`__init__`方法中使用不同的参数列表来实现的。
这可以通过在`__init__`方法中使用默认参数值或使用可变数量的参数来实现。
例如：

class MyClass:
    def __init__(self, arg1, arg2=None):
        if arg2 is None:
            # 执行一些操作
            pass
        else:
            # 执行其他操作
            pass
在上面的示例中，`__init__`方法有两个参数`arg1`和`arg2`。如果只传递一个参数，则执行一些操作；如果传递两个参数，则执行其他操作。
这就是Python中构造方法的重载的一种实现方式。
'''


# 使用默认参数值来实现构造方法的重载
class HuMen:
    def __init__(self, name=None, age=None):
        if name is not None and age is not None:
            print('humen init with name and age')
            self.name = name
            self.age = age
        elif name is not None:
            print('humen init with name only')
            self.name = name
            self.age = 0
        else:
            print('humen init with no arguments')
            self.name = 'Unknown'
            self.age = 0

    def show(self):
        print('name:%s,age:%s' % (self.name, self.age))

# 使用不同的参数组合创建对象
hm1 = HuMen()
hm2 = HuMen('yejing')
hm3 = HuMen('yejing', 22)

hm1.show()
hm2.show()
hm3.show()


